package com.vca.service.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.vca.common.model.invoice.InvoiceRecord;
import com.vca.common.page.CommonPage;
import com.vca.common.request.InvoicePageRequest;
import com.vca.common.request.InvoiceRequest;
import com.vca.common.response.*;
import com.vca.common.result.CommonResult;
import com.vca.common.vo.MyRecord;

import java.util.List;

/**
 * @author Li
 * @description 发票记录表服务类
 * @date 2023-02-08 16:19
 */

public interface InvoiceRecordService extends IService<InvoiceRecord>  {

    /**
     * @description 申请发票
     * @param request
     * @author Li
     * @date 2023/2/8 11:03
     * @return {@link Boolean}
     */
    Long settlementUpload(InvoiceRequest request);


    /**
     * @description 查询可开票列表
     * * @param orderNo
     * @author Li
     * @date 2023/2/9 16:44
     * @return {@link List}<{@link InvoicedListResponse}>
     */
    List<InvoicedListResponse> getInvoiceList(String language,String orderNo);


    /**
     * @description 发票记录
     * @author Li
     * @date 2023/2/10 11:27
     * @return {@link List}<{@link InvoicedRecordResponse}>
     */
    List<InvoicedRecordResponse> getInvoicedRecord();

    /**
    * @description 发票详情
    * @param invoiceId
    * @author Li
    * @date 2023/2/10 14:59
    * @return {@link InvoicedDetailsResponse}
    */
    InvoicedDetailsResponse getInvoiceDetails(Integer invoiceId);

    /**
    * @description 发票分页
    * @param request
    * @author Li
    * @date 2023/2/10 18:32
    * @return {@link PageInfo}<{@link InvoicePageResponse}>
    */
    PageInfo<InvoicePageResponse> invoicePage(InvoicePageRequest request);

    /**
    * @description 发票订单
    * @param id
    * @author Li
    * @date 2023/2/13 9:53
    * @return {@link List}<{@link InvoiceOrderResponse}>
    */
    List<InvoiceOrderResponse> invoiceOrder(Integer id);

    /**
    * @description  结算单反馈，销项发票协同接口(发票回调)
    * @param json
    * @author Li
    * @date 2023/2/13 13:09
    * @return {@link String}
    */
    JSONObject invoiceResultDownload(String json);

    /**
    * @description 红冲发票
    * @param merOrderNo
    * @author Li
    * @date 2023/2/14 9:35
    * @return {@link Boolean}
    */
    Boolean creditNote(List<String> merOrderNo);
}
